import numpy as np
import matplotlib.pyplot as plt

# 定义二次函数
def quadratic_func(x):
    return -2*x**2 + 60*x + 800

# 生成x值范围（从-10到40，覆盖函数的主要特征）
x = np.linspace(-10, 40, 400)

# 计算对应的y值
y = quadratic_func(x)

# 创建图形和坐标轴
plt.figure(figsize=(10, 6))
ax = plt.subplot()

# 绘制函数曲线
plt.plot(x, y, 'b-', linewidth=2, label=r'$y = -2x^2 + 60x + 800$')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False


# 计算并标记顶点（最大值点）
vertex_x = -60/(2*(-2))  # 顶点x坐标 = -b/(2a)
vertex_y = quadratic_func(vertex_x)
plt.plot(vertex_x, vertex_y, 'ro', markersize=8)
plt.annotate(f'顶点 ({vertex_x:.1f}, {vertex_y:.1f})',
             xy=(vertex_x, vertex_y),
             xytext=(vertex_x-5, vertex_y+200),
             arrowprops=dict(facecolor='black', shrink=0.05))

# 计算并标记x轴截距（根）
discriminant = 60**2 - 4*(-2)*800
root1 = (-60 + np.sqrt(discriminant)) / (2*(-2))
root2 = (-60 - np.sqrt(discriminant)) / (2*(-2))
plt.plot([root1, root2], [0, 0], 'go', markersize=8)
plt.annotate(f'根1 ({root1:.1f}, 0)', xy=(root1, 0), xytext=(root1-15, -100))
plt.annotate(f'根2 ({root2:.1f}, 0)', xy=(root2, 0), xytext=(root2+5, -100))

# 标记y轴截距
plt.plot(0, quadratic_func(0), 'mo', markersize=8)
plt.annotate(f'y截距 (0, {quadratic_func(0)})',
             xy=(0, quadratic_func(0)),
             xytext=(5, quadratic_func(0)-100))

# 设置图形属性
plt.title('二次函数图像: $y = -2x^2 + 60x + 800$', fontsize=14)
plt.xlabel('x', fontsize=12)
plt.ylabel('y', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
plt.axhline(y=0, color='k', linewidth=0.5)
plt.axvline(x=0, color='k', linewidth=0.5)
plt.legend(loc='upper right')
plt.xlim(-15, 45)
plt.ylim(-200, 1300)

# 显示图形
plt.tight_layout()
plt.show()